package com.justnow.offer;

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

/**
 * @author justnow
 * Created on 2020-09-17
 * Description
 *

 *
 * 提取年份
 * 时间限制： 3000MS
 * 内存限制： 589824KB
 * 题目描述：
 * 小明想从一段英文短文中提取潜在的年份信息，待匹配的年份的范围为1000年至3999年，包含1000和3999。
 *
 * 输入一段英文短文，按出现次序输出所提取到的所有可能的年份字符串。
 *
 *
 *
 * 输入描述
 * 单组输入，输入一段英文短文，可能包含字母大小写，标点符号及空格。（不超过2000个字符）
 *
 * 输出描述
 * 输出所提取到的所有可能的年份字符串，两两之间用一个空格隔开。
 *
 *
 * 样例输入
 * And millionaires will hold 46% of total wealth by 2019, the report says. This ratio is likely to increase in 2020.
 * 样例输出
 * 2019 2020
 *
 * 规则
 * 请尽量在全场考试结束10分钟前调试程序，否则由于密集排队提交，可能查询不到编译结果
 * 点击“调试”亦可保存代码
 * 编程题可以使用本地编译器，此页面不记录跳出次数
 */
public class JingDong01 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        List<Integer> array = new LinkedList<>();
        int length = str.length();
        if (length < 4) {
            System.out.print(" ");
            return;
        }
        int left = 0, right = 4;
        while (right <= length) {

            int leftContent = str.charAt(left) - '0';
            if (leftContent >= 0 && leftContent <= 9) {
                String substring = str.substring(left, right);
                char[] chars = substring.toCharArray();
                int intNumber = 0;
                for (char aChar : chars) {
                    int temp = aChar - '0';
                    if (temp >= 0 && temp <= 9) {
                        intNumber++;
                    }
                }

                int tempRight = getRigthLeft(str, right);
                if (intNumber == 4 && tempRight != right + 1) {
                    Integer integer = Integer.valueOf(substring);
                    if (integer >= 1000 && integer <= 3999) {
                        if (!array.contains(integer)) {
                            array.add(integer);
                        }
                        left += 4;
                        right += 4;
                        continue;
                    }
                } else {
                    left = tempRight - 1;
                    right = left + 4;
                }
            }
            left++;
            right++;
        }
        for (Integer integer : array) {
            System.out.print(integer + " ");
        }
    }

    public static int getRigthLeft(String str, int right) {
        int temp = right;

        while (temp != str.length() && str.charAt(temp) >= '0' && str.charAt(temp) <= '9') {
            temp++;
        }
        return temp;
    }
}
